WebApplicationBuilder in ASP.NET Core and its Roles in Application setup

WebApplicationBuilder की एप्लिकेशन सेटअप में भूमिकाएँ

मैं इस लेख में .NET 6 और उसके बाद के संस्करणों में उपयोग किए जाने वाले WebApplicationBuilder क्लास के बारे में विस्तार से बताने जा रहा हूँ. इस क्लास की भूमिका को जान कर आप एप्लीकेशन की लो लेवल सेटअप कर सकते हैं।

WebApplicationBuilder क्लास: एक गेम-चेंजर

.NET 6 के साथ, Microsoft ने ASP.NET Core एप्लीकेशन बनाने के तरीके में एक महत्वपूर्ण बदलाव पेश किया, जिसे "मिनिमल API" के नाम से जाना जाता है. इस बदलाव का केंद्र बिंदु WebApplicationBuilder क्लास है.

WebApplicationBuilder क्लास का मुख्य उद्देश्य ASP.NET Core एप्लीकेशन को कॉन्फ़िगर और बूटस्ट्रैप करने की प्रक्रिया को सरल और अधिक संक्षिप्त (simpler and more concise) बनाना है. यह पुराने .NET 5 और उससे पहले के संस्करणों में उपयोग किए जाने वाले Startup.cs फ़ाइल और IHostBuilder / IWebHostBuilder के पैटर्न को काफी हद तक बदल देता है.

मुख्य विशेषताएं और भूमिका:

सिंगल-फाइल अनुभव (Program.cs):

WebApplicationBuilder का उपयोग करके, आप अपनी अधिकांश एप्लीकेशन लॉजिक (सर्विसेज़ का पंजीकरण, मिडलवेयर पाइपलाइन कॉन्फ़िगरेशन, और एंडपॉइंट्स) को अब केवल एक फ़ाइल, Program.cs में रख सकते हैं. यह छोटे और मध्यम आकार के एप्लीकेशन के लिए कोड को बहुत अधिक पढ़ने योग्य और प्रबंधित करने में आसान बनाता है.

होस्ट, कॉन्फ़िगरेशन और लॉगिंग का एकीकरण:

WebApplicationBuilder IHostBuilder, IConfigurationBuilder, ILoggingBuilder, और IServiceCollection के विभिन्न कार्यों को एक साथ जोड़ता है. आपको अलग-अलग बिल्डर को मैन्युअल रूप से बनाने और कॉन्फ़िगर करने की आवश्यकता नहीं होती. यह सब WebApplicationBuilder के माध्यम से उपलब्ध है.

बिल्ट-इन डिफॉल्ट्स:

यह कई उपयोगी डिफॉल्ट्स के साथ आता है, जैसे Kestrel वेब सर्वर का उपयोग, डिफॉल्ट कॉन्फ़िगरेशन प्रोवाइडर्स (जैसे appsettings.json, एनवायरनमेंट वेरिएबल्स, कमांड-लाइन आर्ग्यूमेंट्स), और कंसोल लॉगिंग. यह आपको जल्दी से शुरू करने में मदद करता है.

WebApplication इंस्टेंस का निर्माण:

WebApplicationBuilder का उपयोग अंततः एक WebApplication इंस्टेंस बनाने के लिए किया जाता है. यह WebApplication इंस्टेंस ही रनटाइम पर आपकी ASP.NET Core एप्लीकेशन का प्रतिनिधित्व करता है और मिडलवेयर पाइपलाइन को चलाता है.

WebApplicationBuilder का उपयोग कैसे करें:

आइए किसी .NET 6+ ASP.NET Core एप्लीकेशन के Program.cs फ़ाइल को देखें, वह लगभग निम्न प्रकार होगा:

// 1. WebApplicationBuilder का इंस्टेंस बनाना
var builder = WebApplication.CreateBuilder(args);
// 2. सर्विसेज़ को रजिस्टर करना
// builder.Services के माध्यम से एक्सेस किया जाता है
builder.Services.AddControllersWithViews();// MVC कंट्रोलर्स और व्यूज को जोड़ना
builder.Services.AddRazorPages();// Razor Pages को जोड़ना
builder.Services.AddEndpointsApiExplorer();// Minimal APIs के लिए Swagger/OpenAPI सपोर्ट
builder.Services.AddSwaggerGen();// Swagger UI जोड़ना (अगर उपयोग कर रहे हैं) 
// 3. WebApplication इंस्टेंस बनाना
var app = builder.Build();
// 4. मिडलवेयर पाइपलाइन को कॉन्फ़िगर करना
//    app ऑब्जेक्ट के माध्यम से एक्सेस किया जाता है
if (app.Environment.IsDevelopment())
{
    app.UseDeveloperExceptionPage();// डेवलपमेंट में डिटेल एरर पेज    
    app.UseSwagger();  // Swagger UI सक्षम करें    
    app.UseSwaggerUI();   // Swagger UI सक्षम करें
}
else
{
    app.UseExceptionHandler("/Home/Error"); // प्रोडक्शन में कस्टम एरर पेज    
}
app.UseHsts();             // HTTPS Strict Transport Security} 
app.UseHttpsRedirection(); // HTTP से HTTPS पर रीडायरेक्ट करें
app.UseStaticFiles();      // स्टैटिक फाइल्स (CSS, JS, images) को सर्व करें 
app.UseRouting();          // राउटिंग सक्षम करें 
app.UseAuthorization();    // ऑथराइजेशन सक्षम करें (अगर उपयोग कर रहे हैं) 
// 5. एंडपॉइंट्स को मैप करना (राउटिंग कॉन्फ़िगरेशन)
app.MapControllerRoute(
    name: "default", 
    pattern: "{controller=Home}/{action=Index}/{id?}"); // MVC कंट्रोलर राउट 
app.MapRazorPages();       // Razor Pages के लिए राउट 
                           // Minimal APIs एंडपॉइंट उदाहरण
app.MapGet("/hello", () => "Hello, Minimal API!");
app.MapGet("/weatherforecast", () =>
{
    // आपका वेदर फोरकास्ट लॉजिक   
    return Results.Ok("Weather data");
});
// 6. एप्लीकेशन को रन करना
app.Run();

WebApplicationBuilder के मुख्य गुण (Properties):

WebApplicationBuilder क्लास के पास कुछ महत्वपूर्ण गुण (properties) हैं जो आपको एप्लीकेशन को कॉन्फ़िगर करने की अनुमति देते हैं:

  1. Services ( प्रकार: IServiceCollection):
  2. यह प्रॉपर्टी एप्लीकेशन की डिपेंडेंसी इंजेक्शन (DI) कंटेनर तक पहुँच प्रदान करती है. आप अपनी कस्टम सर्विसेज़, डेटाबेस कॉन्टेक्स्ट, ऑथेंटिकेशन स्कीमा, आदि को यहाँ रजिस्टर करते हैं.

    • उदाहरण: Services.AddScoped<IMyService, MyServiceImplementation>();
  3. Configuration ( प्रकार: IConfiguration):
  4. यह प्रॉपर्टी एप्लीकेशन की कॉन्फ़िगरेशन तक पहुँच प्रदान करती है. यह appsettings.json, एनवायरनमेंट वेरिएबल्स, कमांड-लाइन आर्ग्यूमेंट्स, और अन्य कॉन्फ़िगरेशन प्रोवाइडर्स से लोड किए गए डेटा को समाहित करता है.

    • उदाहरण: var mySetting = builder.Configuration["MyKey"];
  5. Environment ( प्रकार: IWebHostEnvironment या IHostEnvironment):
  6. यह प्रॉपर्टी वर्तमान होस्टिंग एनवायरनमेंट के बारे में जानकारी प्रदान करती है, जैसे कि Development, Staging, Production, आदि. इसका उपयोग एनवायरनमेंट-विशिष्ट कॉन्फ़िगरेशन या मिडलवेयर को लागू करने के लिए किया जाता है.

    • उदाहरण: if (builder.Environment.IsDevelopment()) { /* ... */ }
  7. Logging ( प्रकार: ILoggingBuilder):
  8. यह प्रॉपर्टी लॉगिंग को कॉन्फ़िगर करने के लिए उपयोग की जाती है. आप विभिन्न लॉगिंग प्रोवाइडर्स (जैसे कंसोल, डिबग, फ़ाइल, एज़्योर मॉनिटर) को जोड़ सकते हैं और लॉगिंग स्तरों को सेट कर सकते हैं.

    • उदाहरण: Logging.ClearProviders(); builder.Logging.AddConsole();
  9. WebHost ( प्रकार: IWebHostBuilder):
  10. हालांकि WebApplicationBuilder अधिकांश वेब-विशिष्ट कॉन्फ़िगरेशन को सारगर्भित करता है, builder.WebHost अभी भी अंतर्निहित IWebHostBuilder तक पहुँच प्रदान करता है. इसका उपयोग Kestrel को सीधे कॉन्फ़िगर करने या अन्य वेब-विशिष्ट कॉन्फ़िगरेशन करने के लिए किया जा सकता है जो सीधे WebApplicationBuilder के माध्यम से उपलब्ध नहीं हैं.

    • उदाहरण: WebHost.UseUrls("http://*:5000"); या builder.WebHost.UseKestrel(options => { /* ... */ });

WebApplicationBuilder के लाभ:

  • कम बॉयलरप्लेट कोड: cs फ़ाइल को हटाकर और डिफ़ॉल्ट कॉन्फ़िगरेशन प्रदान करके कोड की मात्रा को काफी कम कर देता है.
  • सरल शुरुआत: नए डेवलपर्स के लिए NET Core एप्लीकेशन के साथ शुरुआत करना आसान बनाता है.
  • बेहतर पढ़ने योग्यता: अधिकांश एप्लीकेशन लॉजिक एक ही फ़ाइल में होने से कोड को पढ़ना और समझना आसान हो जाता है.
  • मिनिमल API सपोर्ट: मिनिमल API पैटर्न के लिए आधार प्रदान करता है, जिससे आप बहुत कम कोड के साथ HTTP एंडपॉइंट बना सकते हैं.

संक्षेप में, WebApplicationBuilder .NET 6 और उसके बाद के संस्करणों में ASP.NET Core एप्लीकेशन डेवलपमेंट का एक मूलभूत हिस्सा है. यह एप्लीकेशन के कॉन्फ़िगरेशन, सर्विसेज़ के पंजीकरण, और मिडलवेयर पाइपलाइन के सेटअप को सरल बनाने के लिए डिज़ाइन किया गया है, जिससे डेवलपर्स को अधिक उत्पादक बनने में मदद मिलती है.

टिप्पणियाँ

इस ब्लॉग से लोकप्रिय पोस्ट

Differences between in-process and out-of-process hosting models

Web Fundamental Concepts in Hindi for Beginners - FAQs with their Answers Part-1

Introduction to ASP.NET Core and Web Frameworks